{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "#第13章 python建模库介绍\n",
    "#pandas与建模代码的结合\n",
    "data = pd.DataFrame({\n",
    "    'x0': [1, 2, 3, 4, 5],\n",
    "    'x1': [0.01, -0.01, 0.25, -4.1, 0.],\n",
    "    'y': [-1.5, 0., 3.6, 1.3, -2.]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x0</th>\n",
       "      <th>x1</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   x0    x1    y\n",
       "0   1  0.01 -1.5\n",
       "1   2 -0.01  0.0\n",
       "2   3  0.25  3.6\n",
       "3   4 -4.10  1.3\n",
       "4   5  0.00 -2.0"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Index(['x0', 'x1', 'y'], dtype='object')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.columns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.  ,  0.01, -1.5 ],\n",
       "       [ 2.  , -0.01,  0.  ],\n",
       "       [ 3.  ,  0.25,  3.6 ],\n",
       "       [ 4.  , -4.1 ,  1.3 ],\n",
       "       [ 5.  ,  0.  , -2.  ]])"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "df2 = pd.DataFrame(data.values, columns=['one', 'two', 'three'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>one</th>\n",
       "      <th>two</th>\n",
       "      <th>three</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2.0</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.0</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4.0</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5.0</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   one   two  three\n",
       "0  1.0  0.01   -1.5\n",
       "1  2.0 -0.01    0.0\n",
       "2  3.0  0.25    3.6\n",
       "3  4.0 -4.10    1.3\n",
       "4  5.0  0.00   -2.0"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "#  .values属性一般在你的数据是同构化的时候使用——例如，都是数字类型的时候。如果你的数据是异构化，结果将是python对象的ndarray\n",
    "df3 = data.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "df3['strings'] = ['a','b','c','d','e']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x0</th>\n",
       "      <th>x1</th>\n",
       "      <th>y</th>\n",
       "      <th>strings</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "      <td>c</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "      <td>d</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>e</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   x0    x1    y strings\n",
       "0   1  0.01 -1.5       a\n",
       "1   2 -0.01  0.0       b\n",
       "2   3  0.25  3.6       c\n",
       "3   4 -4.10  1.3       d\n",
       "4   5  0.00 -2.0       e"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 0.01, -1.5, 'a'],\n",
       "       [2, -0.01, 0.0, 'b'],\n",
       "       [3, 0.25, 3.6, 'c'],\n",
       "       [4, -4.1, 1.3, 'd'],\n",
       "       [5, 0.0, -2.0, 'e']], dtype=object)"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df3.values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "model_cols = ['x0', 'x1']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.  ,  0.01],\n",
       "       [ 2.  , -0.01],\n",
       "       [ 3.  ,  0.25],\n",
       "       [ 4.  , -4.1 ],\n",
       "       [ 5.  ,  0.  ]])"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.loc[:, model_cols].values"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['category'] = pd.Categorical(['a', 'b', 'a', 'a', 'b'],\n",
    "                                  categories=['a', 'b'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x0</th>\n",
       "      <th>x1</th>\n",
       "      <th>y</th>\n",
       "      <th>category</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "      <td>a</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>b</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   x0    x1    y category\n",
       "0   1  0.01 -1.5        a\n",
       "1   2 -0.01  0.0        b\n",
       "2   3  0.25  3.6        a\n",
       "3   4 -4.10  1.3        a\n",
       "4   5  0.00 -2.0        b"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "dummies = pd.get_dummies(data.category, prefix='category')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "data_with_dummies = data.drop('category', axis=1).join(dummies)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x0</th>\n",
       "      <th>x1</th>\n",
       "      <th>y</th>\n",
       "      <th>category_a</th>\n",
       "      <th>category_b</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   x0    x1    y  category_a  category_b\n",
       "0   1  0.01 -1.5           1           0\n",
       "1   2 -0.01  0.0           0           1\n",
       "2   3  0.25  3.6           1           0\n",
       "3   4 -4.10  1.3           1           0\n",
       "4   5  0.00 -2.0           0           1"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_with_dummies"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "#使用Patsy创建模型描述\n",
    "data = pd.DataFrame({\n",
    "    'x0': [1, 2, 3, 4, 5],\n",
    "    'x1': [0.01, -0.01, 0.25, -4.1, 0.],\n",
    "    'y': [-1.5, 0., 3.6, 1.3, -2.]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>x0</th>\n",
       "      <th>x1</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0.01</td>\n",
       "      <td>-1.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>-0.01</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>0.25</td>\n",
       "      <td>3.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>-4.10</td>\n",
       "      <td>1.3</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>0.00</td>\n",
       "      <td>-2.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   x0    x1    y\n",
       "0   1  0.01 -1.5\n",
       "1   2 -0.01  0.0\n",
       "2   3  0.25  3.6\n",
       "3   4 -4.10  1.3\n",
       "4   5  0.00 -2.0"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [],
   "source": [
    "import patsy\n",
    "y, X = patsy.dmatrices('y ~ x0 + x1', data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 1)\n",
       "     y\n",
       "  -1.5\n",
       "   0.0\n",
       "   3.6\n",
       "   1.3\n",
       "  -2.0\n",
       "  Terms:\n",
       "    'y' (column 0)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 3)\n",
       "  Intercept  x0     x1\n",
       "          1   1   0.01\n",
       "          1   2  -0.01\n",
       "          1   3   0.25\n",
       "          1   4  -4.10\n",
       "          1   5   0.00\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'x0' (column 1)\n",
       "    'x1' (column 2)"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.5],\n",
       "       [ 0. ],\n",
       "       [ 3.6],\n",
       "       [ 1.3],\n",
       "       [-2. ]])"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#这些Patsy的DesignMatrix示例是含有附加元数据的NumPy ndarray\n",
    "np.asarray(y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.  ,  1.  ,  0.01],\n",
       "       [ 1.  ,  2.  , -0.01],\n",
       "       [ 1.  ,  3.  ,  0.25],\n",
       "       [ 1.  ,  4.  , -4.1 ],\n",
       "       [ 1.  ,  5.  ,  0.  ]])"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.asarray(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 2)\n",
       "  x0     x1\n",
       "   1   0.01\n",
       "   2  -0.01\n",
       "   3   0.25\n",
       "   4  -4.10\n",
       "   5   0.00\n",
       "  Terms:\n",
       "    'x0' (column 0)\n",
       "    'x1' (column 1)"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "patsy.dmatrices('y ~ x0 + x1 + 0', data)[1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: `rcond` parameter will change to the default of machine precision times ``max(M, N)`` where M and N are the input matrix dimensions.\n",
      "To use the future default and silence this warning we advise to pass `rcond=None`, to keep using the old, explicitly pass `rcond=-1`.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    }
   ],
   "source": [
    "coef, resid, _, _ = np.linalg.lstsq(X, y)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0.31290976],\n",
       "       [-0.07910564],\n",
       "       [-0.26546384]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coef"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "coef = pd.Series(coef.squeeze(), index=X.design_info.column_names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept    0.312910\n",
       "x0          -0.079106\n",
       "x1          -0.265464\n",
       "dtype: float64"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "coef"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "#Patsy公式中的数据转换\n",
    "y, X = patsy.dmatrices('y ~ x0 + np.log(np.abs(x1) + 1)', data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 3)\n",
       "  Intercept  x0  np.log(np.abs(x1) + 1)\n",
       "          1   1                 0.00995\n",
       "          1   2                 0.00995\n",
       "          1   3                 0.22314\n",
       "          1   4                 1.62924\n",
       "          1   5                 0.00000\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'x0' (column 1)\n",
       "    'np.log(np.abs(x1) + 1)' (column 2)"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('y ~ standardize(x0) + center(x1)', data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 3)\n",
       "  Intercept  standardize(x0)  center(x1)\n",
       "          1         -1.41421        0.78\n",
       "          1         -0.70711        0.76\n",
       "          1          0.00000        1.02\n",
       "          1          0.70711       -3.33\n",
       "          1          1.41421        0.77\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'standardize(x0)' (column 1)\n",
       "    'center(x1)' (column 2)"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_data = pd.DataFrame({\n",
    "    'x0': [6, 7, 8, 9],\n",
    "    'x1': [3.1, -0.5, 0, 2.3],\n",
    "    'y': [1, 2, 3, 4]})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_X = patsy.build_design_matrices([X.design_info], new_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[DesignMatrix with shape (4, 3)\n",
       "   Intercept  standardize(x0)  center(x1)\n",
       "           1          2.12132        3.87\n",
       "           1          2.82843        0.27\n",
       "           1          3.53553        0.77\n",
       "           1          4.24264        3.07\n",
       "   Terms:\n",
       "     'Intercept' (column 0)\n",
       "     'standardize(x0)' (column 1)\n",
       "     'center(x1)' (column 2)]"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('y ~ I(x0 + x1)', data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 2)\n",
       "  Intercept  I(x0 + x1)\n",
       "          1        1.01\n",
       "          1        1.99\n",
       "          1        3.25\n",
       "          1       -0.10\n",
       "          1        5.00\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'I(x0 + x1)' (column 1)"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "##分类数据与Patsy\n",
    "new_data = pd.DataFrame({\n",
    "    'x0': [6, 7, 8, 9],\n",
    "    'x1': [3.1, -0.5, 0, 2.3],\n",
    "    'y': [1, 2, 3, 4]})\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "new_X = patsy.build_design_matrices([X.design_info], new_data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[DesignMatrix with shape (4, 2)\n",
       "   Intercept  I(x0 + x1)\n",
       "           1         9.1\n",
       "           1         6.5\n",
       "           1         8.0\n",
       "           1        11.3\n",
       "   Terms:\n",
       "     'Intercept' (column 0)\n",
       "     'I(x0 + x1)' (column 1)]"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [],
   "source": [
    "y,X = patsy.dmatrices('y~I(x0+x1)',data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (5, 2)\n",
       "  Intercept  I(x0 + x1)\n",
       "          1        1.01\n",
       "          1        1.99\n",
       "          1        3.25\n",
       "          1       -0.10\n",
       "          1        5.00\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'I(x0 + x1)' (column 1)"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [],
   "source": [
    "#分类数据与Patsy\n",
    "data = pd.DataFrame({\n",
    "    'key1': ['a', 'a', 'b', 'b', 'a', 'b', 'a', 'b'],\n",
    "    'key2': [0, 1, 0, 1, 0, 1, 0, 0],\n",
    "    'v1': [1, 2, 3, 4, 5, 6, 7, 8],\n",
    "    'v2': [-1, 0, 2.5, -0.5, 4.0, -1.2, 0.2, -1.7]\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('v2 ~ key1', data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (8, 2)\n",
       "  Intercept  key1[T.b]\n",
       "          1          0\n",
       "          1          0\n",
       "          1          1\n",
       "          1          1\n",
       "          1          0\n",
       "          1          1\n",
       "          1          0\n",
       "          1          1\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'key1' (column 1)"
      ]
     },
     "execution_count": 68,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('v2 ~ key1 + 0', data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (8, 2)\n",
       "  key1[a]  key1[b]\n",
       "        1        0\n",
       "        1        0\n",
       "        0        1\n",
       "        0        1\n",
       "        1        0\n",
       "        0        1\n",
       "        1        0\n",
       "        0        1\n",
       "  Terms:\n",
       "    'key1' (columns 0:2)"
      ]
     },
     "execution_count": 70,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('v2 ~ C(key2)', data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [],
   "source": [
    "data['key2'] = data['key2'].map({0: 'zero', 1: 'one'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>key1</th>\n",
       "      <th>key2</th>\n",
       "      <th>v1</th>\n",
       "      <th>v2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>a</td>\n",
       "      <td>zero</td>\n",
       "      <td>1</td>\n",
       "      <td>-1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>a</td>\n",
       "      <td>one</td>\n",
       "      <td>2</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>b</td>\n",
       "      <td>zero</td>\n",
       "      <td>3</td>\n",
       "      <td>2.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "      <td>4</td>\n",
       "      <td>-0.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>a</td>\n",
       "      <td>zero</td>\n",
       "      <td>5</td>\n",
       "      <td>4.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>b</td>\n",
       "      <td>one</td>\n",
       "      <td>6</td>\n",
       "      <td>-1.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>a</td>\n",
       "      <td>zero</td>\n",
       "      <td>7</td>\n",
       "      <td>0.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>b</td>\n",
       "      <td>zero</td>\n",
       "      <td>8</td>\n",
       "      <td>-1.7</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  key1  key2  v1   v2\n",
       "0    a  zero   1 -1.0\n",
       "1    a   one   2  0.0\n",
       "2    b  zero   3  2.5\n",
       "3    b   one   4 -0.5\n",
       "4    a  zero   5  4.0\n",
       "5    b   one   6 -1.2\n",
       "6    a  zero   7  0.2\n",
       "7    b  zero   8 -1.7"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "y, X = patsy.dmatrices('v2 ~ key1 + key2', data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (8, 3)\n",
       "  Intercept  key1[T.b]  key2[T.zero]\n",
       "          1          0             1\n",
       "          1          0             0\n",
       "          1          1             1\n",
       "          1          1             0\n",
       "          1          0             1\n",
       "          1          1             0\n",
       "          1          0             1\n",
       "          1          1             1\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'key1' (column 1)\n",
       "    'key2' (column 2)"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "DesignMatrix with shape (8, 4)\n",
       "  Intercept  key1[T.b]  key2[T.zero]  key1[T.b]:key2[T.zero]\n",
       "          1          0             1                       0\n",
       "          1          0             0                       0\n",
       "          1          1             1                       1\n",
       "          1          1             0                       0\n",
       "          1          0             1                       0\n",
       "          1          1             0                       0\n",
       "          1          0             1                       0\n",
       "          1          1             1                       1\n",
       "  Terms:\n",
       "    'Intercept' (column 0)\n",
       "    'key1' (column 1)\n",
       "    'key2' (column 2)\n",
       "    'key1:key2' (column 3)"
      ]
     },
     "execution_count": 76,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y, X = patsy.dmatrices('v2 ~ key1 + key2 + key1:key2', data)\n",
    "X"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\statsmodels\\compat\\pandas.py:56: FutureWarning: The pandas.core.datetools module is deprecated and will be removed in a future version. Please use the pandas.tseries module instead.\n",
      "  from pandas.core import datetools\n"
     ]
    }
   ],
   "source": [
    "##评估线性模型\n",
    "import statsmodels.api as sm\n",
    "import statsmodels.formula.api as smf\n",
    "from pandas.core import datetools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "metadata": {},
   "outputs": [],
   "source": [
    "def dnorm(mean, variance, size=1):\n",
    "    if isinstance(size, int):\n",
    "        size = size,\n",
    "    return mean + np.sqrt(variance) * np.random.randn(*size)\n",
    "\n",
    "# 用于复现\n",
    "np.random.seed(12345)\n",
    "\n",
    "N = 100\n",
    "X = np.c_[dnorm(0, 0.4, size=N),\n",
    "          dnorm(0, 0.6, size=N),\n",
    "          dnorm(0, 0.2, size=N)]\n",
    "eps = dnorm(0, 0.1, size=N)\n",
    "beta = [0.1, 0.3, 0.5]\n",
    "\n",
    "#在这里下下了已知beta的‘真实’模型\n",
    "y = np.dot(X, beta) + eps"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-0.12946849, -1.21275292,  0.50422488],\n",
       "       [ 0.30291036, -0.43574176, -0.25417986],\n",
       "       [-0.32852189, -0.02530153,  0.13835097],\n",
       "       [-0.35147471, -0.71960511, -0.25821463],\n",
       "       [ 1.2432688 , -0.37379916, -0.52262905]])"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0.42786349, -0.67348041, -0.09087764, -0.48949442, -0.12894109])"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 1.        , -0.12946849, -1.21275292,  0.50422488],\n",
       "       [ 1.        ,  0.30291036, -0.43574176, -0.25417986],\n",
       "       [ 1.        , -0.32852189, -0.02530153,  0.13835097],\n",
       "       [ 1.        , -0.35147471, -0.71960511, -0.25821463],\n",
       "       [ 1.        ,  1.2432688 , -0.37379916, -0.52262905]])"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_model = sm.add_constant(X)\n",
    "X_model[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "metadata": {},
   "outputs": [],
   "source": [
    "#sm.OLS类可以拟合一个最小二乘线性回归\n",
    "model = sm.OLS(y,X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = sm.OLS(y, X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = model.fit()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.17826108, 0.22303962, 0.50095093])"
      ]
     },
     "execution_count": 85,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.params"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "                            OLS Regression Results                            \n",
      "==============================================================================\n",
      "Dep. Variable:                      y   R-squared:                       0.430\n",
      "Model:                            OLS   Adj. R-squared:                  0.413\n",
      "Method:                 Least Squares   F-statistic:                     24.42\n",
      "Date:                Mon, 18 Mar 2019   Prob (F-statistic):           7.44e-12\n",
      "Time:                        21:02:06   Log-Likelihood:                -34.305\n",
      "No. Observations:                 100   AIC:                             74.61\n",
      "Df Residuals:                      97   BIC:                             82.42\n",
      "Df Model:                           3                                         \n",
      "Covariance Type:            nonrobust                                         \n",
      "==============================================================================\n",
      "                 coef    std err          t      P>|t|      [0.025      0.975]\n",
      "------------------------------------------------------------------------------\n",
      "x1             0.1783      0.053      3.364      0.001       0.073       0.283\n",
      "x2             0.2230      0.046      4.818      0.000       0.131       0.315\n",
      "x3             0.5010      0.080      6.237      0.000       0.342       0.660\n",
      "==============================================================================\n",
      "Omnibus:                        4.662   Durbin-Watson:                   2.201\n",
      "Prob(Omnibus):                  0.097   Jarque-Bera (JB):                4.098\n",
      "Skew:                           0.481   Prob(JB):                        0.129\n",
      "Kurtosis:                       3.243   Cond. No.                         1.74\n",
      "==============================================================================\n",
      "\n",
      "Warnings:\n",
      "[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n"
     ]
    }
   ],
   "source": [
    "#在results上调用summary方法可以打印出一个模型的诊断细节\n",
    "print(results.summary())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [],
   "source": [
    "data = pd.DataFrame(X, columns=['col0', 'col1', 'col2'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>col0</th>\n",
       "      <th>col1</th>\n",
       "      <th>col2</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.129468</td>\n",
       "      <td>-1.212753</td>\n",
       "      <td>0.504225</td>\n",
       "      <td>0.427863</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.302910</td>\n",
       "      <td>-0.435742</td>\n",
       "      <td>-0.254180</td>\n",
       "      <td>-0.673480</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.328522</td>\n",
       "      <td>-0.025302</td>\n",
       "      <td>0.138351</td>\n",
       "      <td>-0.090878</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.351475</td>\n",
       "      <td>-0.719605</td>\n",
       "      <td>-0.258215</td>\n",
       "      <td>-0.489494</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1.243269</td>\n",
       "      <td>-0.373799</td>\n",
       "      <td>-0.522629</td>\n",
       "      <td>-0.128941</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       col0      col1      col2         y\n",
       "0 -0.129468 -1.212753  0.504225  0.427863\n",
       "1  0.302910 -0.435742 -0.254180 -0.673480\n",
       "2 -0.328522 -0.025302  0.138351 -0.090878\n",
       "3 -0.351475 -0.719605 -0.258215 -0.489494\n",
       "4  1.243269 -0.373799 -0.522629 -0.128941"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data['y'] = y\n",
    "data[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 89,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = smf.ols('y ~ col0 + col1 + col2', data=data).fit()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 90,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept    0.033559\n",
       "col0         0.176149\n",
       "col1         0.224826\n",
       "col2         0.514808\n",
       "dtype: float64"
      ]
     },
     "execution_count": 90,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.params"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Intercept    0.952188\n",
       "col0         3.319754\n",
       "col1         4.850730\n",
       "col2         6.303971\n",
       "dtype: float64"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.tvalues"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0   -0.002327\n",
       "1   -0.141904\n",
       "2    0.041226\n",
       "3   -0.323070\n",
       "4   -0.100535\n",
       "dtype: float64"
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.predict(data[:5])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 93,
   "metadata": {},
   "outputs": [],
   "source": [
    "#评估时间序列处理\n",
    "init_x = 4\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 94,
   "metadata": {},
   "outputs": [],
   "source": [
    "#模拟具有回归结构的噪声的时间序列数据\n",
    "import random\n",
    "values = [init_x, init_x]\n",
    "N = 1000\n",
    "\n",
    "b0 = 0.8\n",
    "b1 = -0.4\n",
    "noise = dnorm(0, 0.1, N)\n",
    "for i in range(N):\n",
    "    new_x = values[-1] * b0 + values[-2] * b1 + noise[i]\n",
    "    values.append(new_x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 95,
   "metadata": {},
   "outputs": [],
   "source": [
    "MAXLAGS = 5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [],
   "source": [
    "model = sm.tsa.AR(values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = model.fit(MAXLAGS)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 98,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([-0.00616093,  0.78446347, -0.40847891, -0.01364148,  0.01496872,\n",
       "        0.01429462])"
      ]
     },
     "execution_count": 98,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results.params\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>PassengerId</th>\n",
       "      <th>Survived</th>\n",
       "      <th>Pclass</th>\n",
       "      <th>Name</th>\n",
       "      <th>Sex</th>\n",
       "      <th>Age</th>\n",
       "      <th>SibSp</th>\n",
       "      <th>Parch</th>\n",
       "      <th>Ticket</th>\n",
       "      <th>Fare</th>\n",
       "      <th>Cabin</th>\n",
       "      <th>Embarked</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>Braund, Mr. Owen Harris</td>\n",
       "      <td>male</td>\n",
       "      <td>22.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>A/5 21171</td>\n",
       "      <td>7.2500</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Cumings, Mrs. John Bradley (Florence Briggs Th...</td>\n",
       "      <td>female</td>\n",
       "      <td>38.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>PC 17599</td>\n",
       "      <td>71.2833</td>\n",
       "      <td>C85</td>\n",
       "      <td>C</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>Heikkinen, Miss. Laina</td>\n",
       "      <td>female</td>\n",
       "      <td>26.0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>STON/O2. 3101282</td>\n",
       "      <td>7.9250</td>\n",
       "      <td>NaN</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n",
       "      <td>female</td>\n",
       "      <td>35.0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>113803</td>\n",
       "      <td>53.1000</td>\n",
       "      <td>C123</td>\n",
       "      <td>S</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   PassengerId  Survived  Pclass  \\\n",
       "0            1         0       3   \n",
       "1            2         1       1   \n",
       "2            3         1       3   \n",
       "3            4         1       1   \n",
       "\n",
       "                                                Name     Sex   Age  SibSp  \\\n",
       "0                            Braund, Mr. Owen Harris    male  22.0      1   \n",
       "1  Cumings, Mrs. John Bradley (Florence Briggs Th...  female  38.0      1   \n",
       "2                             Heikkinen, Miss. Laina  female  26.0      0   \n",
       "3       Futrelle, Mrs. Jacques Heath (Lily May Peel)  female  35.0      1   \n",
       "\n",
       "   Parch            Ticket     Fare Cabin Embarked  \n",
       "0      0         A/5 21171   7.2500   NaN        S  \n",
       "1      0          PC 17599  71.2833   C85        C  \n",
       "2      0  STON/O2. 3101282   7.9250   NaN        S  \n",
       "3      0            113803  53.1000  C123        S  "
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train = pd.read_csv(r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\titanic\\train.csv')\n",
    "test = pd.read_csv(r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\titanic\\test.csv')\n",
    "train[:4]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      0\n",
       "Survived         0\n",
       "Pclass           0\n",
       "Name             0\n",
       "Sex              0\n",
       "Age            177\n",
       "SibSp            0\n",
       "Parch            0\n",
       "Ticket           0\n",
       "Fare             0\n",
       "Cabin          687\n",
       "Embarked         2\n",
       "dtype: int64"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "PassengerId      0\n",
       "Pclass           0\n",
       "Name             0\n",
       "Sex              0\n",
       "Age             86\n",
       "SibSp            0\n",
       "Parch            0\n",
       "Ticket           0\n",
       "Fare             1\n",
       "Cabin          327\n",
       "Embarked         0\n",
       "dtype: int64"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "test.isnull().sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [],
   "source": [
    "impute_value = train['Age'].median()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "train['Age'] = train['Age'].fillna(impute_value)\n",
    "test['Age'] = test['Age'].fillna(impute_value)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "metadata": {},
   "outputs": [],
   "source": [
    "train['IsFemale'] = (train['Sex'] == 'female').astype(int)\n",
    "test['IsFemale'] = (test['Sex'] == 'female').astype(int)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 1, 1, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "predictors = ['Pclass', 'IsFemale', 'Age']\n",
    "X_train = train[predictors].values\n",
    "X_test = test[predictors].values\n",
    "y_train = train['Survived'].values\n",
    "X_train[:5]\n",
    "y_train[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LogisticRegression\n",
    "model = LogisticRegression()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n",
       "          intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n",
       "          penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n",
       "          verbose=0, warm_start=False)"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 108,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 0, 0, 0, 1, 0, 1, 0, 1, 0], dtype=int64)"
      ]
     },
     "execution_count": 108,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_predict = model.predict(X_test)\n",
    "y_predict[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LogisticRegressionCV(Cs=10, class_weight=None, cv=None, dual=False,\n",
       "           fit_intercept=True, intercept_scaling=1.0, max_iter=100,\n",
       "           multi_class='ovr', n_jobs=1, penalty='l2', random_state=None,\n",
       "           refit=True, scoring=None, solver='lbfgs', tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LogisticRegressionCV\n",
    "model_cv = LogisticRegressionCV(10)\n",
    "model_cv.fit(X_train, y_train)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 110,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.77232143, 0.80269058, 0.77027027, 0.78828829])"
      ]
     },
     "execution_count": 110,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "model = LogisticRegression(C=10)\n",
    "scores = cross_val_score(model, X_train, y_train, cv=4)\n",
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {},
   "outputs": [],
   "source": [
    "##第14章\n",
    "\n",
    "import json\n",
    "path = r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\bitly_usagov\\example.txt'\n",
    "records = [json.loads(line) for line in open(path)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "'tz'",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "\u001b[1;32m<ipython-input-123-f3fbbc37f129>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mtime_zones\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mrec\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'tz'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mrec\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrecords\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;32m<ipython-input-123-f3fbbc37f129>\u001b[0m in \u001b[0;36m<listcomp>\u001b[1;34m(.0)\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mtime_zones\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mrec\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m'tz'\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mrec\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mrecords\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m: 'tz'"
     ]
    }
   ],
   "source": [
    "time_zones = [rec['tz'] for rec in records]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['America/New_York',\n",
       " 'America/Denver',\n",
       " 'America/New_York',\n",
       " 'America/Sao_Paulo',\n",
       " 'America/New_York',\n",
       " 'America/New_York',\n",
       " 'Europe/Warsaw',\n",
       " '',\n",
       " '',\n",
       " '']"
      ]
     },
     "execution_count": 122,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "time_zones = [rec['tz'] for rec in records if 'tz' in rec]\n",
    "time_zones[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_counts(sequence):\n",
    "    counts = {}\n",
    "    for x in sequence:\n",
    "        if x in counts:\n",
    "            counts[x] += 1\n",
    "        else:\n",
    "            counts[x] = 1\n",
    "    return counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import defaultdict\n",
    "\n",
    "def get_counts2(sequence):\n",
    "    counts = defaultdict(int) # values will initialize to 0\n",
    "    for x in sequence:\n",
    "        counts[x] += 1\n",
    "    return counts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3440"
      ]
     },
     "execution_count": 126,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts = get_counts(time_zones)\n",
    "counts['America/New_York']\n",
    "len(time_zones)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 127,
   "metadata": {},
   "outputs": [],
   "source": [
    "def top_counts(count_dict, n=10):\n",
    "    value_key_pairs = [(count, tz) for tz, count in count_dict.items()]\n",
    "    value_key_pairs.sort()\n",
    "    return value_key_pairs[-n:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[(33, 'America/Sao_Paulo'),\n",
       " (35, 'Europe/Madrid'),\n",
       " (36, 'Pacific/Honolulu'),\n",
       " (37, 'Asia/Tokyo'),\n",
       " (74, 'Europe/London'),\n",
       " (191, 'America/Denver'),\n",
       " (382, 'America/Los_Angeles'),\n",
       " (400, 'America/Chicago'),\n",
       " (521, ''),\n",
       " (1251, 'America/New_York')]"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top_counts(counts)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[('America/New_York', 1251),\n",
       " ('', 521),\n",
       " ('America/Chicago', 400),\n",
       " ('America/Los_Angeles', 382),\n",
       " ('America/Denver', 191),\n",
       " ('Europe/London', 74),\n",
       " ('Asia/Tokyo', 37),\n",
       " ('Pacific/Honolulu', 36),\n",
       " ('Europe/Madrid', 35),\n",
       " ('America/Sao_Paulo', 33)]"
      ]
     },
     "execution_count": 129,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from collections import Counter\n",
    "counts = Counter(time_zones)\n",
    "counts.most_common(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 130,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 3560 entries, 0 to 3559\n",
      "Data columns (total 18 columns):\n",
      "_heartbeat_    120 non-null float64\n",
      "a              3440 non-null object\n",
      "al             3094 non-null object\n",
      "c              2919 non-null object\n",
      "cy             2919 non-null object\n",
      "g              3440 non-null object\n",
      "gr             2919 non-null object\n",
      "h              3440 non-null object\n",
      "hc             3440 non-null float64\n",
      "hh             3440 non-null object\n",
      "kw             93 non-null object\n",
      "l              3440 non-null object\n",
      "ll             2919 non-null object\n",
      "nk             3440 non-null float64\n",
      "r              3440 non-null object\n",
      "t              3440 non-null float64\n",
      "tz             3440 non-null object\n",
      "u              3440 non-null object\n",
      "dtypes: float64(4), object(14)\n",
      "memory usage: 500.7+ KB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "0     America/New_York\n",
       "1       America/Denver\n",
       "2     America/New_York\n",
       "3    America/Sao_Paulo\n",
       "4     America/New_York\n",
       "5     America/New_York\n",
       "6        Europe/Warsaw\n",
       "7                     \n",
       "8                     \n",
       "9                     \n",
       "Name: tz, dtype: object"
      ]
     },
     "execution_count": 130,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "frame = pd.DataFrame(records)\n",
    "frame.info()\n",
    "frame['tz'][:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 131,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "America/New_York       1251\n",
       "                        521\n",
       "America/Chicago         400\n",
       "America/Los_Angeles     382\n",
       "America/Denver          191\n",
       "Europe/London            74\n",
       "Asia/Tokyo               37\n",
       "Pacific/Honolulu         36\n",
       "Europe/Madrid            35\n",
       "America/Sao_Paulo        33\n",
       "Name: tz, dtype: int64"
      ]
     },
     "execution_count": 131,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tz_counts = frame['tz'].value_counts()\n",
    "tz_counts[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 132,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "America/New_York       1251\n",
       "Unknown                 521\n",
       "America/Chicago         400\n",
       "America/Los_Angeles     382\n",
       "America/Denver          191\n",
       "Missing                 120\n",
       "Europe/London            74\n",
       "Asia/Tokyo               37\n",
       "Pacific/Honolulu         36\n",
       "Europe/Madrid            35\n",
       "Name: tz, dtype: int64"
      ]
     },
     "execution_count": 132,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "clean_tz = frame['tz'].fillna('Missing')\n",
    "clean_tz[clean_tz == ''] = 'Unknown'\n",
    "tz_counts = clean_tz.value_counts()\n",
    "tz_counts[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 133,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376efc47f0>"
      ]
     },
     "execution_count": 133,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376efc47f0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10, 4))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 134,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2376f3a62b0>"
      ]
     },
     "execution_count": 134,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376aaaaef0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import seaborn as sns\n",
    "subset = tz_counts[:10]\n",
    "sns.barplot(y=subset.index, x=subset.values)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 135,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Mozilla/5.0 (Linux; U; Android 2.2.2; en-us; LG-P9'"
      ]
     },
     "execution_count": 135,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "frame['a'][1]\n",
    "frame['a'][50]\n",
    "frame['a'][51][:50]  # long line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 136,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Mozilla/5.0                 2594\n",
       "Mozilla/4.0                  601\n",
       "GoogleMaps/RochesterNY       121\n",
       "Opera/9.80                    34\n",
       "TEST_INTERNET_AGENT           24\n",
       "GoogleProducer                21\n",
       "Mozilla/6.0                    5\n",
       "BlackBerry8520/5.0.0.681       4\n",
       "dtype: int64"
      ]
     },
     "execution_count": 136,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "results = pd.Series([x.split()[0] for x in frame.a.dropna()])\n",
    "results[:5]\n",
    "results.value_counts()[:8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [],
   "source": [
    "cframe = frame[frame.a.notnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "cframe = cframe.copy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 139,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0        Windows\n",
       "1    Not Windows\n",
       "2        Windows\n",
       "3    Not Windows\n",
       "4        Windows\n",
       "Name: os, dtype: object"
      ]
     },
     "execution_count": 139,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cframe['os'] = np.where(cframe['a'].str.contains('Windows'),\n",
    "                        'Windows', 'Not Windows')\n",
    "cframe['os'][:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 140,
   "metadata": {},
   "outputs": [],
   "source": [
    "by_tz_os = cframe.groupby(['tz', 'os'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 141,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>os</th>\n",
       "      <th>Not Windows</th>\n",
       "      <th>Windows</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tz</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <td>245.0</td>\n",
       "      <td>276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Cairo</th>\n",
       "      <td>0.0</td>\n",
       "      <td>3.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Casablanca</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Ceuta</th>\n",
       "      <td>0.0</td>\n",
       "      <td>2.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Johannesburg</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Africa/Lusaka</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Anchorage</th>\n",
       "      <td>4.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Buenos_Aires</th>\n",
       "      <td>1.0</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Cordoba</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Argentina/Mendoza</th>\n",
       "      <td>0.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "os                              Not Windows  Windows\n",
       "tz                                                  \n",
       "                                      245.0    276.0\n",
       "Africa/Cairo                            0.0      3.0\n",
       "Africa/Casablanca                       0.0      1.0\n",
       "Africa/Ceuta                            0.0      2.0\n",
       "Africa/Johannesburg                     0.0      1.0\n",
       "Africa/Lusaka                           0.0      1.0\n",
       "America/Anchorage                       4.0      1.0\n",
       "America/Argentina/Buenos_Aires          1.0      0.0\n",
       "America/Argentina/Cordoba               0.0      1.0\n",
       "America/Argentina/Mendoza               0.0      1.0"
      ]
     },
     "execution_count": 141,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agg_counts = by_tz_os.size().unstack().fillna(0)\n",
    "agg_counts[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 142,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tz\n",
       "                                  24\n",
       "Africa/Cairo                      20\n",
       "Africa/Casablanca                 21\n",
       "Africa/Ceuta                      92\n",
       "Africa/Johannesburg               87\n",
       "Africa/Lusaka                     53\n",
       "America/Anchorage                 54\n",
       "America/Argentina/Buenos_Aires    57\n",
       "America/Argentina/Cordoba         26\n",
       "America/Argentina/Mendoza         55\n",
       "dtype: int64"
      ]
     },
     "execution_count": 142,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Use to sort in ascending order\n",
    "indexer = agg_counts.sum(1).argsort()\n",
    "indexer[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 143,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>os</th>\n",
       "      <th>Not Windows</th>\n",
       "      <th>Windows</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>tz</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>America/Sao_Paulo</th>\n",
       "      <td>13.0</td>\n",
       "      <td>20.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Europe/Madrid</th>\n",
       "      <td>16.0</td>\n",
       "      <td>19.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Pacific/Honolulu</th>\n",
       "      <td>0.0</td>\n",
       "      <td>36.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Asia/Tokyo</th>\n",
       "      <td>2.0</td>\n",
       "      <td>35.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Europe/London</th>\n",
       "      <td>43.0</td>\n",
       "      <td>31.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Denver</th>\n",
       "      <td>132.0</td>\n",
       "      <td>59.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Los_Angeles</th>\n",
       "      <td>130.0</td>\n",
       "      <td>252.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/Chicago</th>\n",
       "      <td>115.0</td>\n",
       "      <td>285.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th></th>\n",
       "      <td>245.0</td>\n",
       "      <td>276.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>America/New_York</th>\n",
       "      <td>339.0</td>\n",
       "      <td>912.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "os                   Not Windows  Windows\n",
       "tz                                       \n",
       "America/Sao_Paulo           13.0     20.0\n",
       "Europe/Madrid               16.0     19.0\n",
       "Pacific/Honolulu             0.0     36.0\n",
       "Asia/Tokyo                   2.0     35.0\n",
       "Europe/London               43.0     31.0\n",
       "America/Denver             132.0     59.0\n",
       "America/Los_Angeles        130.0    252.0\n",
       "America/Chicago            115.0    285.0\n",
       "                           245.0    276.0\n",
       "America/New_York           339.0    912.0"
      ]
     },
     "execution_count": 143,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "count_subset = agg_counts.take(indexer[-10:])\n",
    "count_subset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 144,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tz\n",
       "America/New_York       1251.0\n",
       "                        521.0\n",
       "America/Chicago         400.0\n",
       "America/Los_Angeles     382.0\n",
       "America/Denver          191.0\n",
       "Europe/London            74.0\n",
       "Asia/Tokyo               37.0\n",
       "Pacific/Honolulu         36.0\n",
       "Europe/Madrid            35.0\n",
       "America/Sao_Paulo        33.0\n",
       "dtype: float64"
      ]
     },
     "execution_count": 144,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "agg_counts.sum(1).nlargest(10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 145,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x237709d7cc0>"
      ]
     },
     "execution_count": 145,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x237709d7cc0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 146,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2376f151518>"
      ]
     },
     "execution_count": 146,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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TsA5SDeePVPBpoHb8dUiM7Na4eqrr+bqq6/eouwLX/hCTtHUHE7AOUhJtpibxczMrI5yArZKNWl3JB1uLM07DDOzOqkm3AVtZmZW7zgBm5mZ5cAJ2MzMLAe+BmyVWrZiFT2vHb9F2byRQ3OKxsysbnECNjOrhcr/cbyzivnjWhJXX301P/nJTwC47bbbWLduHSNGjKh0n0mTJnHooYdyxBFHbFH+/vvvc9BBB7Fy5UokMXv2bHr37s0777zDfvvtx9q1a+nUqRMrV65kxIgR9O/fn0GDBhV9PB07dqS0tJS999676H12N09Bm5lZUZo2bcqjjz7KypUri95n0qRJvPzyy1uV77XXXvzrv/4ry5YtA2DWrFl0796dWbNmATBnzhyOPfZYGjRowC233LJdybe2cAI2M7OiNGrUiOHDh3P77bdvte2tt95i4MCBdO3alYEDB/L2228za9YsHn/8ca699lq6devG66+/vsU+ffr02ZxwZ82axVVXXbXFeu/evQEYNmwYjzzyCJCNbG+66SZ69OhBly5deOWVVwBYtWoVJ510Et27d+fiiy/e4hnU5V+HCPDjH/+YUaNGAXDVVVdxwgknAPDMM89w/vnns3HjRoYNG0bnzp3p0qVLhce8s5yAzcysaJdeeikPPfTQVq8QvOyyyxg6dCiLFy/mvPPO44orrqB3796ceuqpjBw5koULF3LQQQdtsU/v3r03J9zly5fzla98hdLS7NkDs2bNok+fPhXGsPfeezN//ny++c1vcttttwFw880307dvXxYsWMCpp57K22+/DWz5OsQ5c+Zw//33s2DBAvr378+MGdmL6UpLS1m3bh0ff/wxM2fOpF+/fixcuJC//vWvvPTSSyxZsoQLLrhg153EpM4nYEkbJS0s+Lku53iul3SepBGSQtLBBduuSmVFPcg77TMgvZO4om0lkkZVsu1NSTX34oiZ1UgtW7Zk6NChm0ePZWbPns1Xv5q9xO5rX/saM2fO3GZbZSPgN954g44dO9KsWTMignXr1jFv3rzNz48u74wzzgCgZ8+evPnmmwBMnz6d888/H4BTTjmF1q1bAxW/DnHGjBn07NmTefPm8cEHH9C0aVN69epFaWkpM2bMoF+/fhx44IEsX76cyy+/nClTptCyZcsdOl9VqfMJmPSC+4KfW4vdUVJ13KR2Etn7iAGWAOcW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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23770a23f98>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Rearrange the data for plotting\n",
    "count_subset = count_subset.stack()\n",
    "count_subset.name = 'total'\n",
    "count_subset = count_subset.reset_index()\n",
    "count_subset[:10]\n",
    "sns.barplot(x='total', y='tz', hue='os',  data=count_subset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 147,
   "metadata": {},
   "outputs": [],
   "source": [
    "def norm_total(group):\n",
    "    group['normed_total'] = group.total / group.total.sum()\n",
    "    return group\n",
    "\n",
    "results = count_subset.groupby('tz').apply(norm_total)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 148,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f167cf8>"
      ]
     },
     "execution_count": 148,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f167cf8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 149,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2376f151128>"
      ]
     },
     "execution_count": 149,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f3e34e0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.barplot(x='normed_total', y='tz', hue='os',  data=results)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 150,
   "metadata": {},
   "outputs": [],
   "source": [
    "g = count_subset.groupby('tz')\n",
    "results2 = count_subset.total / g.total.transform('sum')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 161,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1995</th>\n",
       "      <td>Woodie</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1996</th>\n",
       "      <td>Worthy</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1997</th>\n",
       "      <td>Wright</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1998</th>\n",
       "      <td>York</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1999</th>\n",
       "      <td>Zachariah</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>2000 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           name sex  births\n",
       "0          Mary   F    7065\n",
       "1          Anna   F    2604\n",
       "2          Emma   F    2003\n",
       "3     Elizabeth   F    1939\n",
       "4        Minnie   F    1746\n",
       "...         ...  ..     ...\n",
       "1995     Woodie   M       5\n",
       "1996     Worthy   M       5\n",
       "1997     Wright   M       5\n",
       "1998       York   M       5\n",
       "1999  Zachariah   M       5\n",
       "\n",
       "[2000 rows x 3 columns]"
      ]
     },
     "execution_count": 161,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "names1880 = pd.read_csv(r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\babynames\\yob1880.txt',\n",
    "                        names=['name', 'sex', 'births'])\n",
    "names1880"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 162,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "sex\n",
       "F     90993\n",
       "M    110493\n",
       "Name: births, dtype: int64"
      ]
     },
     "execution_count": 162,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names1880.groupby('sex').births.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 165,
   "metadata": {},
   "outputs": [],
   "source": [
    "years = range(1880, 2011)\n",
    "\n",
    "pieces = []\n",
    "columns = ['name', 'sex', 'births']\n",
    "\n",
    "for year in years:\n",
    "    path = r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\babynames\\yob%d.txt' % year\n",
    "    frame = pd.read_csv(path, names=columns)\n",
    "\n",
    "    frame['year'] = year\n",
    "    pieces.append(frame)\n",
    "\n",
    "# Concatenate everything into a single DataFrame\n",
    "names = pd.concat(pieces, ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 166,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690779</th>\n",
       "      <td>Zymaire</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690780</th>\n",
       "      <td>Zyonne</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690781</th>\n",
       "      <td>Zyquarius</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690782</th>\n",
       "      <td>Zyran</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690783</th>\n",
       "      <td>Zzyzx</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1690784 rows × 4 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              name sex  births  year\n",
       "0             Mary   F    7065  1880\n",
       "1             Anna   F    2604  1880\n",
       "2             Emma   F    2003  1880\n",
       "3        Elizabeth   F    1939  1880\n",
       "4           Minnie   F    1746  1880\n",
       "...            ...  ..     ...   ...\n",
       "1690779    Zymaire   M       5  2010\n",
       "1690780     Zyonne   M       5  2010\n",
       "1690781  Zyquarius   M       5  2010\n",
       "1690782      Zyran   M       5  2010\n",
       "1690783      Zzyzx   M       5  2010\n",
       "\n",
       "[1690784 rows x 4 columns]"
      ]
     },
     "execution_count": 166,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 167,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2376f21ceb8>"
      ]
     },
     "execution_count": 167,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f27db38>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "total_births = names.pivot_table('births', index='year',\n",
    "                                 columns='sex', aggfunc=sum)\n",
    "total_births.tail()\n",
    "total_births.plot(title='Total births by sex and year')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 168,
   "metadata": {},
   "outputs": [],
   "source": [
    "def add_prop(group):\n",
    "    group['prop'] = group.births / group.births.sum()\n",
    "    return group\n",
    "names = names.groupby(['year', 'sex']).apply(add_prop)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 169,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.077643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.028618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.022013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.021309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.019188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690779</th>\n",
       "      <td>Zymaire</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690780</th>\n",
       "      <td>Zyonne</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690781</th>\n",
       "      <td>Zyquarius</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690782</th>\n",
       "      <td>Zyran</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1690783</th>\n",
       "      <td>Zzyzx</td>\n",
       "      <td>M</td>\n",
       "      <td>5</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000003</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1690784 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "              name sex  births  year      prop\n",
       "0             Mary   F    7065  1880  0.077643\n",
       "1             Anna   F    2604  1880  0.028618\n",
       "2             Emma   F    2003  1880  0.022013\n",
       "3        Elizabeth   F    1939  1880  0.021309\n",
       "4           Minnie   F    1746  1880  0.019188\n",
       "...            ...  ..     ...   ...       ...\n",
       "1690779    Zymaire   M       5  2010  0.000003\n",
       "1690780     Zyonne   M       5  2010  0.000003\n",
       "1690781  Zyquarius   M       5  2010  0.000003\n",
       "1690782      Zyran   M       5  2010  0.000003\n",
       "1690783      Zzyzx   M       5  2010  0.000003\n",
       "\n",
       "[1690784 rows x 5 columns]"
      ]
     },
     "execution_count": 169,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 170,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "year  sex\n",
       "1880  F      1.0\n",
       "      M      1.0\n",
       "1881  F      1.0\n",
       "      M      1.0\n",
       "1882  F      1.0\n",
       "            ... \n",
       "2008  M      1.0\n",
       "2009  F      1.0\n",
       "      M      1.0\n",
       "2010  F      1.0\n",
       "      M      1.0\n",
       "Name: prop, Length: 262, dtype: float64"
      ]
     },
     "execution_count": 170,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "names.groupby(['year', 'sex']).prop.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 171,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_top1000(group):\n",
    "    return group.sort_values(by='births', ascending=False)[:1000]\n",
    "grouped = names.groupby(['year', 'sex'])\n",
    "top1000 = grouped.apply(get_top1000)\n",
    "# Drop the group index, not needed\n",
    "top1000.reset_index(inplace=True, drop=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 172,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>Mary</td>\n",
       "      <td>F</td>\n",
       "      <td>7065</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.077643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>Anna</td>\n",
       "      <td>F</td>\n",
       "      <td>2604</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.028618</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>Emma</td>\n",
       "      <td>F</td>\n",
       "      <td>2003</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.022013</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>Elizabeth</td>\n",
       "      <td>F</td>\n",
       "      <td>1939</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.021309</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>Minnie</td>\n",
       "      <td>F</td>\n",
       "      <td>1746</td>\n",
       "      <td>1880</td>\n",
       "      <td>0.019188</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261872</th>\n",
       "      <td>Camilo</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261873</th>\n",
       "      <td>Destin</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261874</th>\n",
       "      <td>Jaquan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261875</th>\n",
       "      <td>Jaydan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261876</th>\n",
       "      <td>Maxton</td>\n",
       "      <td>M</td>\n",
       "      <td>193</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>261877 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "             name sex  births  year      prop\n",
       "0            Mary   F    7065  1880  0.077643\n",
       "1            Anna   F    2604  1880  0.028618\n",
       "2            Emma   F    2003  1880  0.022013\n",
       "3       Elizabeth   F    1939  1880  0.021309\n",
       "4          Minnie   F    1746  1880  0.019188\n",
       "...           ...  ..     ...   ...       ...\n",
       "261872     Camilo   M     194  2010  0.000102\n",
       "261873     Destin   M     194  2010  0.000102\n",
       "261874     Jaquan   M     194  2010  0.000102\n",
       "261875     Jaydan   M     194  2010  0.000102\n",
       "261876     Maxton   M     193  2010  0.000102\n",
       "\n",
       "[261877 rows x 5 columns]"
      ]
     },
     "execution_count": 172,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top1000\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 173,
   "metadata": {},
   "outputs": [],
   "source": [
    "boys = top1000[top1000.sex == 'M']\n",
    "girls = top1000[top1000.sex == 'F']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 174,
   "metadata": {},
   "outputs": [],
   "source": [
    "total_births = top1000.pivot_table('births', index='year',\n",
    "                                   columns='name',\n",
    "                                   aggfunc=sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 175,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Int64Index: 131 entries, 1880 to 2010\n",
      "Columns: 6868 entries, Aaden to Zuri\n",
      "dtypes: float64(6868)\n",
      "memory usage: 6.9 MB\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([<matplotlib.axes._subplots.AxesSubplot object at 0x0000023702EF6898>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x0000023702E7C390>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x0000023702F30278>,\n",
       "       <matplotlib.axes._subplots.AxesSubplot object at 0x0000023702F6A710>],\n",
       "      dtype=object)"
      ]
     },
     "execution_count": 175,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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AP4PqMY/naMS+NM++j8GzMR/XaLwPvx4HyZmAL8EKvCPLt/Egf+8eRQYxedTPz5zBRABrPRqfZbPp5b8GhgH1OK/WfL5A3xPEZGDZl+criciIrJv5n8Yz+POuQcP43vkA6uBTOdc3eF6HxGRQ0Uj1SIi0qOY/4EwPwGeVqAWkd5CC9+LiEiP4a0Pvh3/FJTpQS5HRKTbNP1DRERERCRAmv4hIiIiIhIghWoRERERkQApVIuIiIiIBEihWkREREQkQArVIiIiIiIBUqgWEREREQmQQrWIiIiISIAUqkVEREREAqRQLSIiIiISIIVqEREREZEAKVSLiIiIiARIoVpEREREJEAK1SIiIiIiAVKoFhEREREJkEK1iIiIiEiAFKpFRERERAKkUC0iIiIiEiCFahERERGRAClUi4iIiIgESKFaRERERCRACtUiIiIiIgFSqBYRERERCZBCtYiIiIhIgBSqRUREREQCpFAtIiIiIhIghWoRERERkQApVIuIiIiIBEihWkREREQkQArVIiIiIiIBUqgWEREREQmQQrWIiIiISIAUqkVEREREAqRQLSIiIiISIIVqEREREZEAKVSLiIiIiARIoVpEREREJEAK1SIiIiIiAVKoFhEREREJkEK1iIiIiEiAFKpFRERERAKkUC0iIiIiEiCFahERERGRAClUi4iIiIgESKFaRERERCRACtUiIiIiIgFSqBYRERERCZBCtYiIiIhIgBSqRUREREQCpFAtIiIiIhIghWoRERERkQApVIuIiIiIBEihWkREREQkQArVIiIiIiIBUqgWEREREQmQQrWIiIiISIAUqkVEREREAqRQLSIiIiISIIVqEREREZEAhQW7gIOVlpbmCgoKgl2GiIiIiPRhixYt2umcS99fv14bqgsKCli4cGGwyxARERGRPszMNnenn6Z/iIiIiIgESKFaRER26ex0wS5BRKRXUqgWEREA6lvamfanWdz19rpglyIi0uv02jnVIiJyaP1jYSlbqpq48521TBqQwnGFqcEuSUR6kPb2dkpLS2lpaQl2KYdFVFQUubm5hIeHH9T+CtUiIkJHp+PRj4s5JjeR+hYfP/nHUt64cSpJMRHBLk1EeojS0lLi4+MpKCjAzIJdziHlnKOyspLS0lIGDBhwUMfQ9A8REeGdVdvZUtXEdScWcufFY6iob+WXLyzHOc2x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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23702ef62e8>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "total_births.info()\n",
    "subset = total_births[['John', 'Harry', 'Mary', 'Marilyn']]\n",
    "subset.plot(subplots=True, figsize=(12, 10), grid=False,\n",
    "            title=\"Number of births per year\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 176,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f1eb5c0>"
      ]
     },
     "execution_count": 176,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f1eb5c0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 177,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2370306bda0>"
      ]
     },
     "execution_count": 177,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23703058d30>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "table = top1000.pivot_table('prop', index='year',\n",
    "                            columns='sex', aggfunc=sum)\n",
    "table.plot(title='Sum of table1000.prop by year and sex',\n",
    "           yticks=np.linspace(0, 1.2, 13), xticks=range(1880, 2020, 10))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>name</th>\n",
       "      <th>sex</th>\n",
       "      <th>births</th>\n",
       "      <th>year</th>\n",
       "      <th>prop</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>260877</th>\n",
       "      <td>Jacob</td>\n",
       "      <td>M</td>\n",
       "      <td>21875</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.011523</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260878</th>\n",
       "      <td>Ethan</td>\n",
       "      <td>M</td>\n",
       "      <td>17866</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.009411</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260879</th>\n",
       "      <td>Michael</td>\n",
       "      <td>M</td>\n",
       "      <td>17133</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.009025</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260880</th>\n",
       "      <td>Jayden</td>\n",
       "      <td>M</td>\n",
       "      <td>17030</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.008971</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>260881</th>\n",
       "      <td>William</td>\n",
       "      <td>M</td>\n",
       "      <td>16870</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.008887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261872</th>\n",
       "      <td>Camilo</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261873</th>\n",
       "      <td>Destin</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261874</th>\n",
       "      <td>Jaquan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261875</th>\n",
       "      <td>Jaydan</td>\n",
       "      <td>M</td>\n",
       "      <td>194</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>261876</th>\n",
       "      <td>Maxton</td>\n",
       "      <td>M</td>\n",
       "      <td>193</td>\n",
       "      <td>2010</td>\n",
       "      <td>0.000102</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>1000 rows × 5 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           name sex  births  year      prop\n",
       "260877    Jacob   M   21875  2010  0.011523\n",
       "260878    Ethan   M   17866  2010  0.009411\n",
       "260879  Michael   M   17133  2010  0.009025\n",
       "260880   Jayden   M   17030  2010  0.008971\n",
       "260881  William   M   16870  2010  0.008887\n",
       "...         ...  ..     ...   ...       ...\n",
       "261872   Camilo   M     194  2010  0.000102\n",
       "261873   Destin   M     194  2010  0.000102\n",
       "261874   Jaquan   M     194  2010  0.000102\n",
       "261875   Jaydan   M     194  2010  0.000102\n",
       "261876   Maxton   M     193  2010  0.000102\n",
       "\n",
       "[1000 rows x 5 columns]"
      ]
     },
     "execution_count": 178,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = boys[boys.year == 2010]\n",
    "df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "116"
      ]
     },
     "execution_count": 179,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "prop_cumsum = df.sort_values(by='prop', ascending=False).prop.cumsum()\n",
    "prop_cumsum[:10]\n",
    "prop_cumsum.values.searchsorted(0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "25"
      ]
     },
     "execution_count": 180,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = boys[boys.year == 1900]\n",
    "in1900 = df.sort_values(by='prop', ascending=False).prop.cumsum()\n",
    "in1900.values.searchsorted(0.5) + 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_quantile_count(group, q=0.5):\n",
    "    group = group.sort_values(by='prop', ascending=False)\n",
    "    return group.prop.cumsum().values.searchsorted(q) + 1\n",
    "\n",
    "diversity = top1000.groupby(['year', 'sex']).apply(get_quantile_count)\n",
    "diversity = diversity.unstack('sex')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f1eb4e0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 183,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x237032f0fd0>"
      ]
     },
     "execution_count": 183,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2370331c860>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "diversity.head()\n",
    "diversity.plot(title=\"Number of popular names in top 50%\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 184,
   "metadata": {},
   "outputs": [],
   "source": [
    "# extract last letter from name column\n",
    "get_last_letter = lambda x: x[-1]\n",
    "last_letters = names.name.map(get_last_letter)\n",
    "last_letters.name = 'last_letter'\n",
    "\n",
    "table = names.pivot_table('births', index=last_letters,\n",
    "                          columns=['sex', 'year'], aggfunc=sum)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 185,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th colspan=\"3\" halign=\"left\">F</th>\n",
       "      <th colspan=\"3\" halign=\"left\">M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>last_letter</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>108376.0</td>\n",
       "      <td>691247.0</td>\n",
       "      <td>670605.0</td>\n",
       "      <td>977.0</td>\n",
       "      <td>5204.0</td>\n",
       "      <td>28438.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>NaN</td>\n",
       "      <td>694.0</td>\n",
       "      <td>450.0</td>\n",
       "      <td>411.0</td>\n",
       "      <td>3912.0</td>\n",
       "      <td>38859.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>5.0</td>\n",
       "      <td>49.0</td>\n",
       "      <td>946.0</td>\n",
       "      <td>482.0</td>\n",
       "      <td>15476.0</td>\n",
       "      <td>23125.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>6750.0</td>\n",
       "      <td>3729.0</td>\n",
       "      <td>2607.0</td>\n",
       "      <td>22111.0</td>\n",
       "      <td>262112.0</td>\n",
       "      <td>44398.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>e</th>\n",
       "      <td>133569.0</td>\n",
       "      <td>435013.0</td>\n",
       "      <td>313833.0</td>\n",
       "      <td>28655.0</td>\n",
       "      <td>178823.0</td>\n",
       "      <td>129012.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex                 F                            M                    \n",
       "year             1910      1960      2010     1910      1960      2010\n",
       "last_letter                                                           \n",
       "a            108376.0  691247.0  670605.0    977.0    5204.0   28438.0\n",
       "b                 NaN     694.0     450.0    411.0    3912.0   38859.0\n",
       "c                 5.0      49.0     946.0    482.0   15476.0   23125.0\n",
       "d              6750.0    3729.0    2607.0  22111.0  262112.0   44398.0\n",
       "e            133569.0  435013.0  313833.0  28655.0  178823.0  129012.0"
      ]
     },
     "execution_count": 185,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtable = table.reindex(columns=[1910, 1960, 2010], level='year')\n",
    "subtable.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 186,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr th {\n",
       "        text-align: left;\n",
       "    }\n",
       "\n",
       "    .dataframe thead tr:last-of-type th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr>\n",
       "      <th>sex</th>\n",
       "      <th colspan=\"3\" halign=\"left\">F</th>\n",
       "      <th colspan=\"3\" halign=\"left\">M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "      <th>1910</th>\n",
       "      <th>1960</th>\n",
       "      <th>2010</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>last_letter</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>a</th>\n",
       "      <td>0.273390</td>\n",
       "      <td>0.341853</td>\n",
       "      <td>0.381240</td>\n",
       "      <td>0.005031</td>\n",
       "      <td>0.002440</td>\n",
       "      <td>0.014980</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>b</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000343</td>\n",
       "      <td>0.000256</td>\n",
       "      <td>0.002116</td>\n",
       "      <td>0.001834</td>\n",
       "      <td>0.020470</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>c</th>\n",
       "      <td>0.000013</td>\n",
       "      <td>0.000024</td>\n",
       "      <td>0.000538</td>\n",
       "      <td>0.002482</td>\n",
       "      <td>0.007257</td>\n",
       "      <td>0.012181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>d</th>\n",
       "      <td>0.017028</td>\n",
       "      <td>0.001844</td>\n",
       "      <td>0.001482</td>\n",
       "      <td>0.113858</td>\n",
       "      <td>0.122908</td>\n",
       "      <td>0.023387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>e</th>\n",
       "      <td>0.336941</td>\n",
       "      <td>0.215133</td>\n",
       "      <td>0.178415</td>\n",
       "      <td>0.147556</td>\n",
       "      <td>0.083853</td>\n",
       "      <td>0.067959</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>v</th>\n",
       "      <td>NaN</td>\n",
       "      <td>0.000060</td>\n",
       "      <td>0.000117</td>\n",
       "      <td>0.000113</td>\n",
       "      <td>0.000037</td>\n",
       "      <td>0.001434</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>w</th>\n",
       "      <td>0.000020</td>\n",
       "      <td>0.000031</td>\n",
       "      <td>0.001182</td>\n",
       "      <td>0.006329</td>\n",
       "      <td>0.007711</td>\n",
       "      <td>0.016148</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>x</th>\n",
       "      <td>0.000015</td>\n",
       "      <td>0.000037</td>\n",
       "      <td>0.000727</td>\n",
       "      <td>0.003965</td>\n",
       "      <td>0.001851</td>\n",
       "      <td>0.008614</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>y</th>\n",
       "      <td>0.110972</td>\n",
       "      <td>0.152569</td>\n",
       "      <td>0.116828</td>\n",
       "      <td>0.077349</td>\n",
       "      <td>0.160987</td>\n",
       "      <td>0.058168</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>z</th>\n",
       "      <td>0.002439</td>\n",
       "      <td>0.000659</td>\n",
       "      <td>0.000704</td>\n",
       "      <td>0.000170</td>\n",
       "      <td>0.000184</td>\n",
       "      <td>0.001831</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>26 rows × 6 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "sex                 F                             M                    \n",
       "year             1910      1960      2010      1910      1960      2010\n",
       "last_letter                                                            \n",
       "a            0.273390  0.341853  0.381240  0.005031  0.002440  0.014980\n",
       "b                 NaN  0.000343  0.000256  0.002116  0.001834  0.020470\n",
       "c            0.000013  0.000024  0.000538  0.002482  0.007257  0.012181\n",
       "d            0.017028  0.001844  0.001482  0.113858  0.122908  0.023387\n",
       "e            0.336941  0.215133  0.178415  0.147556  0.083853  0.067959\n",
       "...               ...       ...       ...       ...       ...       ...\n",
       "v                 NaN  0.000060  0.000117  0.000113  0.000037  0.001434\n",
       "w            0.000020  0.000031  0.001182  0.006329  0.007711  0.016148\n",
       "x            0.000015  0.000037  0.000727  0.003965  0.001851  0.008614\n",
       "y            0.110972  0.152569  0.116828  0.077349  0.160987  0.058168\n",
       "z            0.002439  0.000659  0.000704  0.000170  0.000184  0.001831\n",
       "\n",
       "[26 rows x 6 columns]"
      ]
     },
     "execution_count": 186,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subtable.sum()\n",
    "letter_prop = subtable / subtable.sum()\n",
    "letter_prop"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2370319cdd8>"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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rgPGAQuramWSecCyqloMzE1yMvAb4CEapxYBTgTmJdkEbAbOr6oHR+KNSJKk3jVt2jTWrNm1x2XaegxQVS0BlgzadnHL8tPH/RrbrwauHk6BkiRJuwJnpJckSeoCQ5ckSVIXGLokSZK6wNAlSZJ60tvf/nYOOOAAjjzyyC3bfvjDH3LCCScwffp0Xve617FxY2Nq0A0bNvCa17yGPffck7lz527Vz/Lly5k+fTqHHXYYF1xwAVUjM3tVWxfSS5IkPZPJF32to/2tveyM7bY555xzmDt3LmefffaWbe94xzv46Ec/ykknncTChQu54ooruPTSS5kwYQKXXnopd9xxB3fcccdW/bzzne9kwYIFvOpVr+L000/n2muv5bTTTuvo+wFHuiRJUo868cQT2Xfffbfadtddd3HiiScCMGPGDK6+ujGJwvOe9zxe/epXM2HChK3a33fffWzcuJETTjiBJJx99tlcc801I1KvoUuSJO0yjjzySBYvbszhftVVV7Fu3bpnbL9+/Xr6+vq2rPf19bF+/foRqc3QJUmSdhkLFy5k/vz5HHPMMfzyl79k/Pjxz9h+qOu3kqEeOz18XtMlSZJ2GS972cu4/vrrAfjxj3/M1772zNea9fX1MTAwsGV9YGCAgw46aERqc6RLkiTtMu6//36g8fDsD33oQ5x//vnP2P7AAw9kr7324uabb6aq+OxnP8usWbNGpDZHuiRJUk8666yzuOmmm/jFL35BX18fH/zgB3nkkUeYP38+AG94wxt429vetqX95MmT2bhxI0888QTXXHMN119/PdOmTeMTn/gE55xzDo8++iinnXbaiNy5CIYuSZLUAe1M8dBp//Iv/zLk9ne/e8hHQrN27doht/f39z9tGomR4OlFSZKkLjB0SZIkdYGhS5IkqQsMXZIkSV1g6JIkSeqCtkJXkplJ7kqyOslFQ+w/P8mKJLcl+W6SaS373ts87q4kp3ayeEmSpF6x3dCVZBwwHzgNmAac1Rqqmr5YVdOr6ijgcuDvmsdOA2YDRwAzgX9q9idJkjQsb3/72znggAM48sgjt2z74Q9/yAknnMD06dN53etex8aNG7fsu/322znhhBM44ogjmD59Oo899hgAy5cvZ/r06Rx22GFccMEFQz4aqBPamafrOGB1Va0BSLIImAWseqpBVW1saf884KlqZwGLqupx4CdJ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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x237031587f0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "\n",
    "fig, axes = plt.subplots(2, 1, figsize=(10, 8))\n",
    "letter_prop['M'].plot(kind='bar', rot=0, ax=axes[0], title='Male')\n",
    "letter_prop['F'].plot(kind='bar', rot=0, ax=axes[1], title='Female',\n",
    "                      legend=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 188,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x237030b0208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.subplots_adjust(hspace=0.25)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 189,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>last_letter</th>\n",
       "      <th>d</th>\n",
       "      <th>n</th>\n",
       "      <th>y</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>1880</th>\n",
       "      <td>0.083055</td>\n",
       "      <td>0.153213</td>\n",
       "      <td>0.075760</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1881</th>\n",
       "      <td>0.083247</td>\n",
       "      <td>0.153214</td>\n",
       "      <td>0.077451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1882</th>\n",
       "      <td>0.085340</td>\n",
       "      <td>0.149560</td>\n",
       "      <td>0.077537</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1883</th>\n",
       "      <td>0.084066</td>\n",
       "      <td>0.151646</td>\n",
       "      <td>0.079144</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1884</th>\n",
       "      <td>0.086120</td>\n",
       "      <td>0.149915</td>\n",
       "      <td>0.080405</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "last_letter         d         n         y\n",
       "year                                     \n",
       "1880         0.083055  0.153213  0.075760\n",
       "1881         0.083247  0.153214  0.077451\n",
       "1882         0.085340  0.149560  0.077537\n",
       "1883         0.084066  0.151646  0.079144\n",
       "1884         0.086120  0.149915  0.080405"
      ]
     },
     "execution_count": 189,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "letter_prop = table / table.sum()\n",
    "dny_ts = letter_prop.loc[['d', 'n', 'y'], 'M'].T\n",
    "dny_ts.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 190,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.close('all')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x237035da5f8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 192,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2370325abe0>"
      ]
     },
     "execution_count": 192,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23703212940>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "dny_ts.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 193,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "632     Leslie\n",
       "2294    Lesley\n",
       "4262    Leslee\n",
       "4728     Lesli\n",
       "6103     Lesly\n",
       "dtype: object"
      ]
     },
     "execution_count": 193,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "all_names = pd.Series(top1000.name.unique())\n",
    "lesley_like = all_names[all_names.str.lower().str.contains('lesl')]\n",
    "lesley_like"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 194,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "name\n",
       "Leslee      1082\n",
       "Lesley     35022\n",
       "Lesli        929\n",
       "Leslie    370429\n",
       "Lesly      10067\n",
       "Name: births, dtype: int64"
      ]
     },
     "execution_count": 194,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filtered = top1000[top1000.name.isin(lesley_like)]\n",
    "filtered.groupby('name').births.sum()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 195,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>sex</th>\n",
       "      <th>F</th>\n",
       "      <th>M</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>year</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2006</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2007</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2008</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2009</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2010</th>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "sex     F   M\n",
       "year         \n",
       "2006  1.0 NaN\n",
       "2007  1.0 NaN\n",
       "2008  1.0 NaN\n",
       "2009  1.0 NaN\n",
       "2010  1.0 NaN"
      ]
     },
     "execution_count": 195,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "table = filtered.pivot_table('births', index='year',\n",
    "                             columns='sex', aggfunc='sum')\n",
    "table = table.div(table.sum(1), axis=0)\n",
    "table.tail()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 196,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23703655e10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 197,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x2370366be48>"
      ]
     },
     "execution_count": 197,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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+YYAePbs2XxlP/30EwFw165d+cree+89enh4FNq7Tk9P56effsqFCxfme71t27alTqczDb9cuHDBNCRx/fp1kuRbb73FihUrMj09vdDXXpZ99913HDZsmOmPoSg9GRkZ9Pb2Zrdu3Th//nwCYKNGjejh4cHk5GStw3MYdp3c9Xo9+/btSwAcO3ZsvvKdO3cSAH18fApt45dffiEAbt261bQtJSWFvXr1YocOHUzbnnnmGQJgXFxcnv33799PLy8vxsTEMD09nWvWrGFGRgZJw7CKk5MTJ0+enGef9PR0enl5sWfPnnm2nz17lhMnTuSdO3fyxZmRkcFevXqxatWq1Ol0XLZsWZ7yn3/+mREREabnOb2rmJiYQl97WZWdnc2GDRuyRYsWWofisP7+97/TycmJderU4VNPPcX9+/cTAP/5z39qHZrDsOvkPmfOHFOv4eOPP85XnjOO3a5du0I/uo8dO5aurq68f/9+vrLcvd6ePXsSACMjI/PU0ev1prY/+OADAmB0dLSpvFWrVmzZsmWefZYsWZKvHklu2rSJANi5c2cuWrQoXzxdu3alTqfj0qVLC3wtud2+fZvOzs58//33i6xrK5KTk/njjz8yOzv7kfXWr19PAAWeI1E6zp49a/q0mPN+bNOmDevXr1/k/5+wDLtN7levXqWbmxu7detW6JtpwIABrFWr1iPbadOmDZ999tkijxcTE8PKlSvzwoULBZbv3buXOp2OgwYNyrN9ypQpBMD4+HiSZGRkJJVSrFu3br6x+PT0dFasWJEA+Prrr+c7RkpKymNdtOrcuTMDAgLKzC/bgAEDCIDffvttvrKcP6Dx8fF84okn6O3tbbdDTmVF165dGRwcbHof53RaIiMjuW3bthINmd24cYMffPABU1NT85WlpqZy7ty5BZY5ErtN7qTh4mdSUhJJw1j5w+N98+bNM42lFzZVKzU11TS7ori+//57AqC3tzdTUlLylJ0+fZqhoaGmsfBly5bxgw8+4NWrVwtsq3fv3vTw8GBCQkKJYiLJLVu2cNWqVQVe0LU0vV7PESNGcMSIEfk+JaWnp3PJkiXcsGFDofsfOHCASimWK1eOlSpV4pUrV0xl165dY6NGjfj7779z9uzZVErlm8UkSt+9e/fyXDNKT09n+/btTT16X19frl27tlht9+nThwD49ttv59l+5MgRNmjQ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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23703613b38>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "table.plot(style={'M': 'k-', 'F': 'k--'})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 199,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "D:\\Anaconda3\\lib\\site-packages\\IPython\\core\\interactiveshell.py:2728: DtypeWarning: Columns (6) have mixed types. Specify dtype option on import or set low_memory=False.\n",
      "  interactivity=interactivity, compiler=compiler, result=result)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1001731 entries, 0 to 1001730\n",
      "Data columns (total 16 columns):\n",
      "cmte_id              1001731 non-null object\n",
      "cand_id              1001731 non-null object\n",
      "cand_nm              1001731 non-null object\n",
      "contbr_nm            1001731 non-null object\n",
      "contbr_city          1001712 non-null object\n",
      "contbr_st            1001727 non-null object\n",
      "contbr_zip           1001620 non-null object\n",
      "contbr_employer      988002 non-null object\n",
      "contbr_occupation    993301 non-null object\n",
      "contb_receipt_amt    1001731 non-null float64\n",
      "contb_receipt_dt     1001731 non-null object\n",
      "receipt_desc         14166 non-null object\n",
      "memo_cd              92482 non-null object\n",
      "memo_text            97770 non-null object\n",
      "form_tp              1001731 non-null object\n",
      "file_num             1001731 non-null int64\n",
      "dtypes: float64(1), int64(1), object(14)\n",
      "memory usage: 122.3+ MB\n"
     ]
    }
   ],
   "source": [
    "fec = pd.read_csv(r'D:\\pydata-book-2nd-edition\\pydata-book-2nd-edition\\datasets\\fec\\P00000001-ALL.csv')\n",
    "fec.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 200,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cmte_id             C00431445\n",
       "cand_id             P80003338\n",
       "cand_nm         Obama, Barack\n",
       "contbr_nm         ELLMAN, IRA\n",
       "contbr_city             TEMPE\n",
       "                    ...      \n",
       "receipt_desc              NaN\n",
       "memo_cd                   NaN\n",
       "memo_text                 NaN\n",
       "form_tp                 SA17A\n",
       "file_num               772372\n",
       "Name: 123456, Length: 16, dtype: object"
      ]
     },
     "execution_count": 200,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.iloc[123456]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 201,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'Obama, Barack'"
      ]
     },
     "execution_count": 201,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "unique_cands = fec.cand_nm.unique()\n",
    "unique_cands\n",
    "unique_cands[2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 202,
   "metadata": {},
   "outputs": [],
   "source": [
    "parties = {'Bachmann, Michelle': 'Republican',\n",
    "           'Cain, Herman': 'Republican',\n",
    "           'Gingrich, Newt': 'Republican',\n",
    "           'Huntsman, Jon': 'Republican',\n",
    "           'Johnson, Gary Earl': 'Republican',\n",
    "           'McCotter, Thaddeus G': 'Republican',\n",
    "           'Obama, Barack': 'Democrat',\n",
    "           'Paul, Ron': 'Republican',\n",
    "           'Pawlenty, Timothy': 'Republican',\n",
    "           'Perry, Rick': 'Republican',\n",
    "           \"Roemer, Charles E. 'Buddy' III\": 'Republican',\n",
    "           'Romney, Mitt': 'Republican',\n",
    "           'Santorum, Rick': 'Republican'}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 203,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Democrat      593746\n",
       "Republican    407985\n",
       "Name: party, dtype: int64"
      ]
     },
     "execution_count": 203,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.cand_nm[123456:123461]\n",
    "fec.cand_nm[123456:123461].map(parties)\n",
    "# Add it as a column\n",
    "fec['party'] = fec.cand_nm.map(parties)\n",
    "fec['party'].value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 204,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "True     991475\n",
       "False     10256\n",
       "Name: contb_receipt_amt, dtype: int64"
      ]
     },
     "execution_count": 204,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "(fec.contb_receipt_amt > 0).value_counts()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 205,
   "metadata": {},
   "outputs": [],
   "source": [
    "fec = fec[fec.contb_receipt_amt > 0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 206,
   "metadata": {},
   "outputs": [],
   "source": [
    "fec_mrbo = fec[fec.cand_nm.isin(['Obama, Barack', 'Romney, Mitt'])]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 207,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "RETIRED                                   233990\n",
       "INFORMATION REQUESTED                      35107\n",
       "ATTORNEY                                   34286\n",
       "HOMEMAKER                                  29931\n",
       "PHYSICIAN                                  23432\n",
       "INFORMATION REQUESTED PER BEST EFFORTS     21138\n",
       "ENGINEER                                   14334\n",
       "TEACHER                                    13990\n",
       "CONSULTANT                                 13273\n",
       "PROFESSOR                                  12555\n",
       "Name: contbr_occupation, dtype: int64"
      ]
     },
     "execution_count": 207,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fec.contbr_occupation.value_counts()[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 208,
   "metadata": {},
   "outputs": [],
   "source": [
    "occ_mapping = {\n",
    "   'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',\n",
    "   'INFORMATION REQUESTED' : 'NOT PROVIDED',\n",
    "   'INFORMATION REQUESTED (BEST EFFORTS)' : 'NOT PROVIDED',\n",
    "   'C.E.O.': 'CEO'\n",
    "}\n",
    "\n",
    "# If no mapping provided, return x\n",
    "f = lambda x: occ_mapping.get(x, x)\n",
    "fec.contbr_occupation = fec.contbr_occupation.map(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 209,
   "metadata": {},
   "outputs": [],
   "source": [
    "emp_mapping = {\n",
    "   'INFORMATION REQUESTED PER BEST EFFORTS' : 'NOT PROVIDED',\n",
    "   'INFORMATION REQUESTED' : 'NOT PROVIDED',\n",
    "   'SELF' : 'SELF-EMPLOYED',\n",
    "   'SELF EMPLOYED' : 'SELF-EMPLOYED',\n",
    "}\n",
    "\n",
    "# If no mapping provided, return x\n",
    "f = lambda x: emp_mapping.get(x, x)\n",
    "fec.contbr_employer = fec.contbr_employer.map(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>party</th>\n",
       "      <th>Democrat</th>\n",
       "      <th>Republican</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_occupation</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>ATTORNEY</th>\n",
       "      <td>11141982.97</td>\n",
       "      <td>7.477194e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CEO</th>\n",
       "      <td>2074974.79</td>\n",
       "      <td>4.211041e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CONSULTANT</th>\n",
       "      <td>2459912.71</td>\n",
       "      <td>2.544725e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>ENGINEER</th>\n",
       "      <td>951525.55</td>\n",
       "      <td>1.818374e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>EXECUTIVE</th>\n",
       "      <td>1355161.05</td>\n",
       "      <td>4.138850e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PRESIDENT</th>\n",
       "      <td>1878509.95</td>\n",
       "      <td>4.720924e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>PROFESSOR</th>\n",
       "      <td>2165071.08</td>\n",
       "      <td>2.967027e+05</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>REAL ESTATE</th>\n",
       "      <td>528902.09</td>\n",
       "      <td>1.625902e+06</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RETIRED</th>\n",
       "      <td>25305116.38</td>\n",
       "      <td>2.356124e+07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>SELF-EMPLOYED</th>\n",
       "      <td>672393.40</td>\n",
       "      <td>1.640253e+06</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>17 rows × 2 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "party                 Democrat    Republican\n",
       "contbr_occupation                           \n",
       "ATTORNEY           11141982.97  7.477194e+06\n",
       "CEO                 2074974.79  4.211041e+06\n",
       "CONSULTANT          2459912.71  2.544725e+06\n",
       "ENGINEER             951525.55  1.818374e+06\n",
       "EXECUTIVE           1355161.05  4.138850e+06\n",
       "...                        ...           ...\n",
       "PRESIDENT           1878509.95  4.720924e+06\n",
       "PROFESSOR           2165071.08  2.967027e+05\n",
       "REAL ESTATE          528902.09  1.625902e+06\n",
       "RETIRED            25305116.38  2.356124e+07\n",
       "SELF-EMPLOYED        672393.40  1.640253e+06\n",
       "\n",
       "[17 rows x 2 columns]"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "by_occupation = fec.pivot_table('contb_receipt_amt',\n",
    "                                index='contbr_occupation',\n",
    "                                columns='party', aggfunc='sum')\n",
    "over_2mm = by_occupation[by_occupation.sum(1) > 2000000]\n",
    "over_2mm"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23712faa0b8>"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23712faa0b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x23713189ac8>"
      ]
     },
     "execution_count": 212,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2376f21cda0>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "over_2mm.plot(kind='barh')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 213,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_top_amounts(group, key, n=5):\n",
    "    totals = group.groupby(key)['contb_receipt_amt'].sum()\n",
    "    return totals.nlargest(n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 214,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "cand_nm        contbr_employer      \n",
       "Obama, Barack  RETIRED                  22694358.85\n",
       "               SELF-EMPLOYED            17080985.96\n",
       "               NOT EMPLOYED              8586308.70\n",
       "               INFORMATION REQUESTED     5053480.37\n",
       "               HOMEMAKER                 2605408.54\n",
       "                                           ...     \n",
       "Romney, Mitt   CREDIT SUISSE              281150.00\n",
       "               MORGAN STANLEY             267266.00\n",
       "               GOLDMAN SACH & CO.         238250.00\n",
       "               BARCLAYS CAPITAL           162750.00\n",
       "               H.I.G. CAPITAL             139500.00\n",
       "Name: contb_receipt_amt, Length: 20, dtype: float64"
      ]
     },
     "execution_count": 214,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped = fec_mrbo.groupby('cand_nm')\n",
    "grouped.apply(get_top_amounts, 'contbr_occupation', n=7)\n",
    "grouped.apply(get_top_amounts, 'contbr_employer', n=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 216,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "411         (10, 100]\n",
       "412       (100, 1000]\n",
       "413       (100, 1000]\n",
       "414         (10, 100]\n",
       "415         (10, 100]\n",
       "             ...     \n",
       "701381      (10, 100]\n",
       "701382    (100, 1000]\n",
       "701383        (1, 10]\n",
       "701384      (10, 100]\n",
       "701385    (100, 1000]\n",
       "Name: contb_receipt_amt, Length: 694282, dtype: category\n",
       "Categories (8, interval[int64]): [(0, 1] < (1, 10] < (10, 100] < (100, 1000] < (1000, 10000] < (10000, 100000] < (100000, 1000000] < (1000000, 10000000]]"
      ]
     },
     "execution_count": 216,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "bins = np.array([0, 1, 10, 100, 1000, 10000,\n",
    "                 100000, 1000000, 10000000])\n",
    "labels = pd.cut(fec_mrbo.contb_receipt_amt, bins)\n",
    "labels"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 217,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contb_receipt_amt</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>(0, 1]</th>\n",
       "      <td>493.0</td>\n",
       "      <td>77.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1, 10]</th>\n",
       "      <td>40070.0</td>\n",
       "      <td>3681.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10, 100]</th>\n",
       "      <td>372280.0</td>\n",
       "      <td>31853.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100, 1000]</th>\n",
       "      <td>153991.0</td>\n",
       "      <td>43357.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000, 10000]</th>\n",
       "      <td>22284.0</td>\n",
       "      <td>26186.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(10000, 100000]</th>\n",
       "      <td>2.0</td>\n",
       "      <td>1.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(100000, 1000000]</th>\n",
       "      <td>3.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>(1000000, 10000000]</th>\n",
       "      <td>4.0</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm              Obama, Barack  Romney, Mitt\n",
       "contb_receipt_amt                               \n",
       "(0, 1]                       493.0          77.0\n",
       "(1, 10]                    40070.0        3681.0\n",
       "(10, 100]                 372280.0       31853.0\n",
       "(100, 1000]               153991.0       43357.0\n",
       "(1000, 10000]              22284.0       26186.0\n",
       "(10000, 100000]                2.0           1.0\n",
       "(100000, 1000000]              3.0           NaN\n",
       "(1000000, 10000000]            4.0           NaN"
      ]
     },
     "execution_count": 217,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped = fec_mrbo.groupby(['cand_nm', labels])\n",
    "grouped.size().unstack(0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 218,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2370cf60c18>"
      ]
     },
     "execution_count": 218,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2370cf60c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x237042099e8>"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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FjJu3DhatmzJrl276NatGxdddBG5ubl89tln9OjRg/vuu49Bgwbx05/+lNmzZ7Nq1SqGDRvGgAEDaN26NbNnz6ZRo0asWbOGIUOGsHhx1ctJ9+zZE3dn3bp1PPfcc2X1lcVywgkncOeddwLQuXNnbr/9dgCGDh3KzJkz6d+/P5dffjmjR49m0KBBlJaWsm/fPtavjyxY9sYbb3DjjTfywgsvcNRRR9XIeY9SkhQRyWIVvf2jfH3v3r3Jzc0FIq+2ev311yksLGTs2LE8/3zk0fD169ezZs0acnNzadCgAf36Rd7LUFBQQMOGDalfvz4FBQVlS8zt3r2bG264gaVLl5KTk8M///nPhOItKiqiVatWvPfee/Tq1YsePXpwxBFHxI0lJyeHiy66aL/977//fnbu3MmWLVs4/vjj6dGjBx988AGDBg0CoFGjL9apWb16NSNHjmTWrFl8+ctfTubUJkRJUkQkix1//PH8+c9/3q/uk08+Yf369Rx99NG89dZbByRRM2PevHnMmTOHBQsW0LhxY3r06FH2Kq369euX7RPvNVcPP/wwbdq04e2332bfvn37JaZEHH300bRp04ZVq1axc+fOuLE0atSInJzIAxClpaVcd911LF68mPbt2zNmzBhKS0up7FHFvLw8SktLWbJkSUqSpCbuiIhksV69erFz504mTJgARCa3fP/732f48OFlL0+ePXs2W7ZsYdeuXUybNo2vf/3rbN++nRYtWtC4cWPeeecdFi5cWFk3B9i+fTt5eXnUq1ePZ599dr9JNV/72teq3H/Tpk28//77fOUrX0k4lmjibNWqFZ9++ilTpkwBIpeX27Vrx7Rp0wD4/PPP2blzJwDNmzfnxRdf5Mc//jHz5s1L6jcmQiNJEZEkFKd5opyZ8fzzz3Pddddx1113sW/fPr71rW9xzz33lLU588wzGTp0KGvXruWyyy6jsLCQgoICfvvb39KlSxeOPfZYTjvttKT6ve6667jooouYPHkyPXv25Etf+hIAH3/8caUju549e5KTk8Pu3bu59957adOmDf369UsolubNm3P11VdTUFBAfn4+3bp1K9v27LPPcs0113D77bdTv379/SbutGnThhkzZnDuuecybtw4Tj21ui9/OlBKV9yR1CssLPREbqaLSPVUtFrLoWzmzJmsW7cu6cc7MulgVtzRSFJERBJ2/vnnZzqEtNI9SRERkTiUJEVEROJQkhQREYlDSVJERCQOJUkREZE4NLtVRCQZY5rV8PG2V9kkJyeHgoIC9uzZQ4cOHXj22Wdp3rx2vPg4Pz+f9u3bM3/+/LK6k046iT179rBixQoWL17MhAkTGDt2LPPmzaNBgwZlC6lPmzaNY445hs6dO2cqfI0kRUSy3eGHH87SpUtZsWIFLVu25PHHH890SEnZsWNH2WLkq1ev3m9bdI1ZiLwf8o033ijbNm3aNFatWpW+QCugJCkiUoucfvrpfPDBB0BkkfNbb72VE044gYKCAiZNmgREks3ZZ5/NxRdfzDHHHMPo0aP5wx/+QPfu3SkoKOC9994DYPjw4dx0002cccYZdOzYsWwZOIAHHniAbt260aVLl7JXb/3sZz/jV7/6VVmbn/zkJ2UJrjIXX3xxWWx/+tOfGDJkSNm2efPmcf7551NcXMxvf/tbHn74YU466SReffVVpk+fzq233spJJ51UFnO6KUmKiNQSe/fuZe7cuQwYMACAqVOnsnTpUt5++23mzJnDrbfeyoYNGwB4++23+dWvfsXy5ct59tln+ec//8mbb77JVVddxaOPPlp2zA0bNvD6668zc+ZMRo8eDcCsWbNYs2YNb775JkuXLuWtt97itdde48orr2T8+PEA7Nu3j4kTJ3L55ZdXGffgwYOZOnUqADNmzKB///4HtMnPz+e73/0ut9xyC0uXLuXss89mwIABPPDAAyxdupSjjz764E5eNemepIhIltu1axcnnXQSxcXFnHLKKfTu3RuA119/nSFDhpCTk0ObNm04++yzWbRoEU2bNqVbt27k5eUBkTdy9OnTB4i8GquoqKjs2BdccAH16tWjc+fObNy4EYgkyVmzZtG1a1cAPv30U9asWcNZZ51Fbm4uS5YsYePGjXTt2rXsFV2VadmyJS1atGDixIkcd9xxZQuz1wZKkrXdh0tqfiKBSG2RwKSXuiB6T3L79u2cf/75PP7449x0002VLjQeff0VxH8dVvl20eO5Oz/60Y+45pprDjjuVVddxTPPPMN//vMfRowYkfBvuOSSS7j++ut55plnEt4nG+hyq4hILdGsWTPGjh3Lgw8+yO7duznrrLOYNGkSe/fu5aOPPuK1116je/fuB91P3759GTduHJ9++ikAH3zwAZs2bQJg0KBBvPTSSyxatIi+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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x23704210048>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bucket_sums = grouped.contb_receipt_amt.sum().unstack(0)\n",
    "normed_sums = bucket_sums.div(bucket_sums.sum(axis=1), axis=0)\n",
    "normed_sums\n",
    "normed_sums[:-2].plot(kind='barh')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 220,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_st</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>AK</th>\n",
       "      <td>281840.15</td>\n",
       "      <td>86204.24</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AL</th>\n",
       "      <td>543123.48</td>\n",
       "      <td>527303.51</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AR</th>\n",
       "      <td>359247.28</td>\n",
       "      <td>105556.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AZ</th>\n",
       "      <td>1506476.98</td>\n",
       "      <td>1888436.23</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CA</th>\n",
       "      <td>23824984.24</td>\n",
       "      <td>11237636.60</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CO</th>\n",
       "      <td>2132429.49</td>\n",
       "      <td>1506714.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CT</th>\n",
       "      <td>2068291.26</td>\n",
       "      <td>3499475.45</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DC</th>\n",
       "      <td>4373538.80</td>\n",
       "      <td>1025137.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DE</th>\n",
       "      <td>336669.14</td>\n",
       "      <td>82712.00</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FL</th>\n",
       "      <td>7318178.58</td>\n",
       "      <td>8338458.81</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm    Obama, Barack  Romney, Mitt\n",
       "contbr_st                             \n",
       "AK             281840.15      86204.24\n",
       "AL             543123.48     527303.51\n",
       "AR             359247.28     105556.00\n",
       "AZ            1506476.98    1888436.23\n",
       "CA           23824984.24   11237636.60\n",
       "CO            2132429.49    1506714.12\n",
       "CT            2068291.26    3499475.45\n",
       "DC            4373538.80    1025137.50\n",
       "DE             336669.14      82712.00\n",
       "FL            7318178.58    8338458.81"
      ]
     },
     "execution_count": 220,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grouped = fec_mrbo.groupby(['cand_nm', 'contbr_st'])\n",
    "totals = grouped.contb_receipt_amt.sum().unstack(0).fillna(0)\n",
    "totals = totals[totals.sum(1) > 100000]\n",
    "totals[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 221,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th>cand_nm</th>\n",
       "      <th>Obama, Barack</th>\n",
       "      <th>Romney, Mitt</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>contbr_st</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>AK</th>\n",
       "      <td>0.765778</td>\n",
       "      <td>0.234222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AL</th>\n",
       "      <td>0.507390</td>\n",
       "      <td>0.492610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AR</th>\n",
       "      <td>0.772902</td>\n",
       "      <td>0.227098</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>AZ</th>\n",
       "      <td>0.443745</td>\n",
       "      <td>0.556255</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CA</th>\n",
       "      <td>0.679498</td>\n",
       "      <td>0.320502</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CO</th>\n",
       "      <td>0.585970</td>\n",
       "      <td>0.414030</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>CT</th>\n",
       "      <td>0.371476</td>\n",
       "      <td>0.628524</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DC</th>\n",
       "      <td>0.810113</td>\n",
       "      <td>0.189887</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>DE</th>\n",
       "      <td>0.802776</td>\n",
       "      <td>0.197224</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>FL</th>\n",
       "      <td>0.467417</td>\n",
       "      <td>0.532583</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "cand_nm    Obama, Barack  Romney, Mitt\n",
       "contbr_st                             \n",
       "AK              0.765778      0.234222\n",
       "AL              0.507390      0.492610\n",
       "AR              0.772902      0.227098\n",
       "AZ              0.443745      0.556255\n",
       "CA              0.679498      0.320502\n",
       "CO              0.585970      0.414030\n",
       "CT              0.371476      0.628524\n",
       "DC              0.810113      0.189887\n",
       "DE              0.802776      0.197224\n",
       "FL              0.467417      0.532583"
      ]
     },
     "execution_count": 221,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "percent = totals.div(totals.sum(1), axis=0)\n",
    "percent[:10]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "\n",
    "##  由于最近时间太过紧凑 没能看14章 \n",
    "###只能日后找时间再看QAQ"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
